﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Navigation;
using Microsoft.Phone.Controls;
using Microsoft.Phone.Shell;
using AppGPS.Helper;
using System.Diagnostics;
using AppGPS.ViewModels;
using AppGPS.Views.UControl;
using Microsoft.Phone.Tasks;
using System.Windows.Media.Imaging;
using Models;

namespace AppGPS.Views
{
    public partial class UIInfomation : PhoneApplicationPage
    {
        PhotoChooserTask photoChooserTask;
        string _szAvatar;
        public UIInfomation()
        {
            InitializeComponent();
            photoChooserTask = new PhotoChooserTask();
            photoChooserTask.Completed += new EventHandler<PhotoResult>(photoChooserTask_Completed);
        }

        private void Button_Click(object sender, RoutedEventArgs e)
        {
            MainSlide.SelectedIndex = 1;
        }

        private void ListBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            MainSlide.SelectedIndex = 1;

            MainTab.SelectedIndex = MainMenu.SelectedIndex;

            txtHeader.Text = (MainMenu.SelectedItem as Models.MenuItem).Title;
        }

        private void MainTab_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            
            MainMenu.SelectedIndex=MainTab.SelectedIndex ;

            switch (MainTab.SelectedIndex)
            {
                case 0: LoadTab0Data(); break;
            }
        }
        private void Settings_Click(object sender, RoutedEventArgs e)
        {
            if (MainSlide.SelectedIndex == 1)

                MainSlide.SelectedIndex = 0;
            else
                MainSlide.SelectedIndex = 1;
        }
        #region LoadDataTab
        private void LoadTab0Data()
        {
            imgAvatar.Source = ImageConvert.base64image(App.dataShare.LoginInfo.UserInfo.Avatar);
            aboutFullname.Text = "Họ và tên :"+App.dataShare.LoginInfo.UserInfo.Fullname;
            aboutEmail.Text= "Địa chỉ mail :"+App.dataShare.LoginInfo.UserInfo.Email;
            aboutPhone.Text = "Điện thoại :" + App.dataShare.LoginInfo.UserInfo.Phone;
        }
        #endregion

        #region TabChangerPassword
        SecurityRequest _security = new SecurityRequest(App.dataShare.szHost);
        UserRequest _userRequest = new UserRequest(App.dataShare.szHost);

        private bool CheckPassword()
        {
           // MSecurity.
            return false;
        }
        private void changebtnReset_Click(object sender, RoutedEventArgs e)
        {
            changePassOld.Password = "";
            changePassreNew.Password = "";
            changePassnew.Password = "";
            changePassOld.Focus();
        }

        private async void btnChangerPassword_Click(object sender, RoutedEventArgs e)
        {
            var MSecurity=await _security.Encode(App.dataShare.LoginInfo.Username, changePassOld.Password);

            if (MSecurity == App.dataShare.LoginInfo.Password)
            {
                if(changePassnew.Password==changePassreNew.Password)
                {
                    var InfoPut=App.dataShare.LoginInfo;
                    InfoPut.Password=changePassreNew.Password;
                    var Result=await _userRequest.ChangerPassword(InfoPut);
                    if(Result==true)
                    {
                        App.dataShare.LoginInfo.Password = MSecurity;
                        UMessageBox.Show("Bạn đã thay đổi mật khẩu thành công vui lòng thử lại ở đăng nhập", "Đổi mật khẩu thành công");
                    }
                    else
                        UMessageBox.Show("Bạn đã thay đổi mật khẩu thành công vui lòng thử lại ở đăng nhập", "Đổi mật khẩu thành công");
                }
                else
                    UMessageBox.Show("Mật khẩu mới không trùng nhau , vui lòng kiểm tra lại", "Có lỗi xảy ra");
            }
            else
                UMessageBox.Show("Mật khẩu cũ không chính xác , vui lòng kiểm tra lại", "Có lỗi xảy ra");
        }

        #endregion

        #region TabChange Infomation
        UserInfoRequest _infoRequest = new UserInfoRequest(App.dataShare.szHost);
        private void txtAvatar_Tap(object sender, System.Windows.Input.GestureEventArgs e)
        {
            photoChooserTask.Show();   
        }
        private void photoChooserTask_Completed(object sender, PhotoResult e)
        {
            if (e.ChosenPhoto == null) return;

            BitmapImage image = new BitmapImage();

            image.SetSource(e.ChosenPhoto);

            _szAvatar = ImageConvert.BitmapImageToBase64(image, 100, 100);

            txtAvatar.Text = e.OriginalFileName;

            Thumbnail.Source = ImageConvert.base64image(_szAvatar);
        }

        private async void btninfoChange_Click(object sender, RoutedEventArgs e)
        {
            var data = App.dataShare.LoginInfo;

            if(_szAvatar!=null || _szAvatar!="")
            {
                data.UserInfo.Avatar = _szAvatar;
            }
            if(txtFullname.Text!="")
            {
                data.UserInfo.Fullname = txtFullname.Text;
            }
            if (txtEmail.Text != "")
            {
                if(!Utils.CheckEmail(txtEmail.Text))
                {
                    var bCheck = await _infoRequest.EmailExists(txtEmail.Text);

                    if(!bCheck)
                        data.UserInfo.Email = txtEmail.Text;
                    else
                    { 
                        UMessageBox.Show("Địa chỉ email đã tồn tại vui lòng nhập lại..!", "có lỗi xảy ra");

                        return;
                    }
                }
                else
                {
                    UMessageBox.Show("Địa chỉ email không đúng định dạng vui lòng nhập lại..!", "có lỗi xảy ra");

                    return;
                }
            }
            if (txtPhoneNumber.Text != "")
            {
                data.UserInfo.Phone = txtPhoneNumber.Text;
            }
            var Result = await _infoRequest.UpdateInfomation(data);

            if(Result==false)
            {
                UMessageBox.Show("Cập nhật thông tin thất bại ...!", "có lỗi xảy ra");

                return;
            }
            else
                UMessageBox.Show("Cập nhật thông tin thành công...!", "cập nhật thành công");

            btninfoReset_Click(sender,e);
        }
        private void btninfoReset_Click(object sender, RoutedEventArgs e)
        {
            _szAvatar = "";
            txtAvatar.Text = "";
            txtEmail.Text = "";
            txtPhoneNumber.Text = "";
            txtFullname.Text = "";
        }
        #endregion        
    }
}